Since at least the 1980s, the client/server computing model has become increasingly adopted for a wide variety of software applications. Using this approach, client software on the user's computer system interacts with server software operating on one or more remote computer systems.
Over time, what are referred to as “thin” and “thick” clients have evolved, together with thin client and thick client application platforms that provide run-time containers for clients of the corresponding type. Thick clients are typically standalone clients typically provide a solution to a particular problem, such as word processing. Thick clients are provided on a client computer system on top of a thick client application platform. WinForms from Microsoft® Corporation is an example of an existing thick client application platform. Though they provide rich functionality, such as responsiveness and a rich user interface, thick clients are expensive to deploy, upgrade, and administer. The thin client approach arose to address these issues, by providing a central server where applications can be deployed and accessed over a network connection through a thin client container, such as a browser program. When a thin client is used, all or most of the application processing is performed by the server. Advantages of the thin client approach are that the application can be centrally deployed and conveniently administered at the central server. The thin client approach requires fewer costly distributions of new application versions to the client computer system, since many changes or fixes can be accomplished at the server end. During operation, the client container basically requests content to be displayed, which is returned as a response document from the server, and then is simply rendered through the thin client to the user.
Although the thin client technique often reduces total cost of ownership, it is limited with respect to suitable application types, the richness that can be provided in the user interface, interaction speed, disconnected offline use, and overall user experience.
Some existing thick clients have attempted to address the aforementioned problems. For example, some thick clients can be deployed with the capability to be upgraded over a network. Such thick clients include RealPlayer® multi-media player provided by RealNetworks®, the Flash® graphics application from Macromedia®, and MS Windows® provided by Microsoft® Corporation. However, in order to effectively use many of these systems, the user often must have significant program compatibility information. Without access to and consideration of program interaction compatibility, settings, and configuration information, using many such systems may result in program malfunctions resulting in help desk calls.
Another existing solution has been to centrally deploy a thick client application to a central server that can then replicate the runtime and application state data for multiple users. An example of this approach is found in software provided by Citrix Systems, Inc. These systems are typically costly, do not operate across platforms, and depend on the ability of the software to properly replicate all appropriate runtime and configuration information.
Locked down client computer system desktop constructs provide some protections, including grants that permit and define new programs that can be installed, and what settings can be changed, if any. However, user-enabled customization is a limited solution, and can result in reduced user productivity.
To extend functionality for a specific thin client container, such as a browser, custom plugins can be employed that provide richness of experience for a particular solution. However, these extensions are built on the thin client framework, while browser extensions are not managed. Moreover, this approach is limited with respect to what functions are available, based on the sandbox model for code execution. In addition, well-meaning users can also turn their browsers into unmanaged thick clients by adding functional extensions.
For the reasons stated above and others, in order to address the issue of bridging the gap between thin and thick clients, there is a need for a server managed client platform that retains the benefits of a thick client, and having the server managed characteristics of a thin client. The system should further be able to use the same management systems as are used to manage thin client applications.